// Copyright 2016 Proyectos y Sistemas de Mantenimiento SL (eProsima).
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

/*!
 * @file DdsRecorderMonitoringStatus.h
 * This header file contains the declaration of the described types in the IDL file.
 *
 * This file was generated by the tool fastddsgen.
 */

#include <fastcdr/config.h>
#include "DdsRecorderMonitoringStatusv1.h"

#if FASTCDR_VERSION_MAJOR > 1

#ifndef _FAST_DDS_GENERATED_DDSRECORDERMONITORINGSTATUS_H_
#define _FAST_DDS_GENERATED_DDSRECORDERMONITORINGSTATUS_H_

#include <array>
#include <bitset>
#include <cstdint>
#include <map>
#include <string>
#include <vector>

#include <fastcdr/cdr/fixed_size_string.hpp>
#include <fastcdr/xcdr/external.hpp>
#include <fastcdr/xcdr/optional.hpp>

#include "ddspipe_core/types/monitoring/status/v2/MonitoringStatus.h"


#if defined(_WIN32)
#if defined(EPROSIMA_USER_DLL_EXPORT)
#define eProsima_user_DllExport __declspec( dllexport )
#else
#define eProsima_user_DllExport
#endif  // EPROSIMA_USER_DLL_EXPORT
#else
#define eProsima_user_DllExport
#endif  // _WIN32

#if defined(_WIN32)
#if defined(EPROSIMA_USER_DLL_EXPORT)
#if defined(DDSRECORDERMONITORINGSTATUS_SOURCE)
#define DDSRECORDERMONITORINGSTATUS_DllAPI __declspec( dllexport )
#else
#define DDSRECORDERMONITORINGSTATUS_DllAPI __declspec( dllimport )
#endif // DDSRECORDERMONITORINGSTATUS_SOURCE
#else
#define DDSRECORDERMONITORINGSTATUS_DllAPI
#endif  // EPROSIMA_USER_DLL_EXPORT
#else
#define DDSRECORDERMONITORINGSTATUS_DllAPI
#endif // _WIN32

namespace eprosima {
namespace fastcdr {
class Cdr;
class CdrSizeCalculator;
} // namespace fastcdr
} // namespace eprosima





/*!
 * @brief This class represents the structure DdsRecorderMonitoringErrorStatus defined by the user in the IDL file.
 * @ingroup DdsRecorderMonitoringStatus
 */
class DdsRecorderMonitoringErrorStatus
{
public:

    /*!
     * @brief Default constructor.
     */
    eProsima_user_DllExport DdsRecorderMonitoringErrorStatus();

    /*!
     * @brief Default destructor.
     */
    eProsima_user_DllExport ~DdsRecorderMonitoringErrorStatus();

    /*!
     * @brief Copy constructor.
     * @param x Reference to the object DdsRecorderMonitoringErrorStatus that will be copied.
     */
    eProsima_user_DllExport DdsRecorderMonitoringErrorStatus(
            const DdsRecorderMonitoringErrorStatus& x);

    /*!
     * @brief Move constructor.
     * @param x Reference to the object DdsRecorderMonitoringErrorStatus that will be copied.
     */
    eProsima_user_DllExport DdsRecorderMonitoringErrorStatus(
            DdsRecorderMonitoringErrorStatus&& x) noexcept;

    /*!
     * @brief Copy assignment.
     * @param x Reference to the object DdsRecorderMonitoringErrorStatus that will be copied.
     */
    eProsima_user_DllExport DdsRecorderMonitoringErrorStatus& operator =(
            const DdsRecorderMonitoringErrorStatus& x);

    /*!
     * @brief Move assignment.
     * @param x Reference to the object DdsRecorderMonitoringErrorStatus that will be copied.
     */
    eProsima_user_DllExport DdsRecorderMonitoringErrorStatus& operator =(
            DdsRecorderMonitoringErrorStatus&& x) noexcept;

    /*!
     * @brief Comparison operator.
     * @param x DdsRecorderMonitoringErrorStatus object to compare.
     */
    eProsima_user_DllExport bool operator ==(
            const DdsRecorderMonitoringErrorStatus& x) const;

    /*!
     * @brief Comparison operator.
     * @param x DdsRecorderMonitoringErrorStatus object to compare.
     */
    eProsima_user_DllExport bool operator !=(
            const DdsRecorderMonitoringErrorStatus& x) const;

    /*!
     * @brief This function sets a value in member mcap_file_creation_failure
     * @param _mcap_file_creation_failure New value for member mcap_file_creation_failure
     */
    eProsima_user_DllExport void mcap_file_creation_failure(
            bool _mcap_file_creation_failure);

    /*!
     * @brief This function returns the value of member mcap_file_creation_failure
     * @return Value of member mcap_file_creation_failure
     */
    eProsima_user_DllExport bool mcap_file_creation_failure() const;

    /*!
     * @brief This function returns a reference to member mcap_file_creation_failure
     * @return Reference to member mcap_file_creation_failure
     */
    eProsima_user_DllExport bool& mcap_file_creation_failure();


    /*!
     * @brief This function sets a value in member disk_full
     * @param _disk_full New value for member disk_full
     */
    eProsima_user_DllExport void disk_full(
            bool _disk_full);

    /*!
     * @brief This function returns the value of member disk_full
     * @return Value of member disk_full
     */
    eProsima_user_DllExport bool disk_full() const;

    /*!
     * @brief This function returns a reference to member disk_full
     * @return Reference to member disk_full
     */
    eProsima_user_DllExport bool& disk_full();

private:

    bool m_mcap_file_creation_failure{false};
    bool m_disk_full{false};

};


/*!
 * @brief This class represents the structure DdsRecorderMonitoringStatus defined by the user in the IDL file.
 * @ingroup DdsRecorderMonitoringStatus
 */
class DdsRecorderMonitoringStatus : public MonitoringStatus
{
public:

    /*!
     * @brief Default constructor.
     */
    eProsima_user_DllExport DdsRecorderMonitoringStatus();

    /*!
     * @brief Default destructor.
     */
    eProsima_user_DllExport ~DdsRecorderMonitoringStatus();

    /*!
     * @brief Copy constructor.
     * @param x Reference to the object DdsRecorderMonitoringStatus that will be copied.
     */
    eProsima_user_DllExport DdsRecorderMonitoringStatus(
            const DdsRecorderMonitoringStatus& x);

    /*!
     * @brief Move constructor.
     * @param x Reference to the object DdsRecorderMonitoringStatus that will be copied.
     */
    eProsima_user_DllExport DdsRecorderMonitoringStatus(
            DdsRecorderMonitoringStatus&& x) noexcept;

    /*!
     * @brief Copy assignment.
     * @param x Reference to the object DdsRecorderMonitoringStatus that will be copied.
     */
    eProsima_user_DllExport DdsRecorderMonitoringStatus& operator =(
            const DdsRecorderMonitoringStatus& x);

    /*!
     * @brief Move assignment.
     * @param x Reference to the object DdsRecorderMonitoringStatus that will be copied.
     */
    eProsima_user_DllExport DdsRecorderMonitoringStatus& operator =(
            DdsRecorderMonitoringStatus&& x) noexcept;

    /*!
     * @brief Comparison operator.
     * @param x DdsRecorderMonitoringStatus object to compare.
     */
    eProsima_user_DllExport bool operator ==(
            const DdsRecorderMonitoringStatus& x) const;

    /*!
     * @brief Comparison operator.
     * @param x DdsRecorderMonitoringStatus object to compare.
     */
    eProsima_user_DllExport bool operator !=(
            const DdsRecorderMonitoringStatus& x) const;

    /*!
     * @brief This function copies the value in member ddsrecorder_error_status
     * @param _ddsrecorder_error_status New value to be copied in member ddsrecorder_error_status
     */
    eProsima_user_DllExport void ddsrecorder_error_status(
            const DdsRecorderMonitoringErrorStatus& _ddsrecorder_error_status);

    /*!
     * @brief This function moves the value in member ddsrecorder_error_status
     * @param _ddsrecorder_error_status New value to be moved in member ddsrecorder_error_status
     */
    eProsima_user_DllExport void ddsrecorder_error_status(
            DdsRecorderMonitoringErrorStatus&& _ddsrecorder_error_status);

    /*!
     * @brief This function returns a constant reference to member ddsrecorder_error_status
     * @return Constant reference to member ddsrecorder_error_status
     */
    eProsima_user_DllExport const DdsRecorderMonitoringErrorStatus& ddsrecorder_error_status() const;

    /*!
     * @brief This function returns a reference to member ddsrecorder_error_status
     * @return Reference to member ddsrecorder_error_status
     */
    eProsima_user_DllExport DdsRecorderMonitoringErrorStatus& ddsrecorder_error_status();

private:

    DdsRecorderMonitoringErrorStatus m_ddsrecorder_error_status;

};

#endif // _FAST_DDS_GENERATED_DDSRECORDERMONITORINGSTATUS_H_



#endif // FASTCDR_VERSION_MAJOR > 1
